﻿#pragma once
#include "zyWindow.h"

namespace DarkMoonUI {

	class zyToolTips : public  zyWindow
	{
	public:
		zyToolTips();
		~zyToolTips();
		
		static void  WINAPI zyToolTips_Destroy(zyObject* obj);
		static LRESULT WINAPI zyToolTips_ChildWndProc(zyObject* obj, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, BOOL* bHandle);
		static LRESULT  WINAPI zyToolTips_WndProc(zyObject* obj, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL* bHandled);
		void OnNCDestroy();
		BOOL 创建(int 参数_窗口风格 = 0, int 参数_扩展风格 = 0);
		bool 添加(HWND 参数_窗口句柄, const std::wstring& 参数_提示文本, bool 参数_显示在正下方 = false, bool 参数_使用绝对位置 = false);
		void 删除(HWND 参数_窗口句柄);
		int 取提示数() { return (int)sendMsg(TTM_GETTOOLCOUNT, 0, 0); }
		int 置最大宽度(int 参数_最大宽度) { return (int)sendMsg(TTM_SETMAXTIPWIDTH, 0, 参数_最大宽度); }
		int 取最大宽度() { return (int)sendMsg(TTM_GETMAXTIPWIDTH, 0, 0); }
		bool 置标题(const std::wstring& 参数_提示文本, int 参数_标题图标) { return sendMsg(TTM_SETTITLEW, 参数_标题图标, (LPARAM)参数_提示文本.c_str()) != 0; }
		void 置提示文本(HWND 参数_窗口句柄, const std::wstring& 参数_提示文本);
		std::wstring 取提示文本(HWND 参数_窗口句柄);
		void 置延时(int 参数_延时类型, int 参数_延时) { sendMsg(TTM_SETDELAYTIME, 参数_延时类型, 参数_延时); }
		int 取延时(int 参数_延时类型) { return (int)sendMsg(TTM_GETDELAYTIME, 参数_延时类型, 0); }
		void 启用(bool 参数_是否启用) { sendMsg(TTM_ACTIVATE, 参数_是否启用, 0); }
		bool 调节矩形(RECT 参数_矩形) { return sendMsg(TTM_ADJUSTRECT, 1, (LPARAM)&参数_矩形) != 0; }
		void 置矩形(HWND 参数_窗口句柄, RECT& 参数_新矩形);
		int 背景色(int 参数_颜色值 = 0);
		int 文本色(int 参数_颜色值 = 0);
		int 取所有窗口(std::vector<HWND>& 参数_窗口句柄数组);
		int 取坐标窗口(int 参数_x, int 参数_y);
		POINT 取气泡尺寸(HWND 参数_窗口句柄);
		HWND 取当前窗口();
		RECT 取边距();
		void 置边距(RECT 参数_边距);
		//@备注 在最后一个鼠标位置 弹出提示，必须启用 Window通用组件6.0
		void 弹出() { sendMsg(TTM_POPUP, 0, 0); }
		void 隐藏() { sendMsg(TTM_POP, 0, 0); }
		void 置提示位置(int 参数_屏幕水平位置, int 参数_屏幕垂直位置);
		void 激活跟踪(HWND 参数_窗口句柄, bool 参数_是否激活);
		//@备注 函数 整型 OnShow(HWND hWnd)
		void 事件_被显示(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnShow", 参数_事件指针); }
		//@备注 函数 整型 OnHide(HWND hWnd)
		void 事件_被隐藏(TRegEvent* 参数_事件指针) { SetRegEvent(L"OnHide", 参数_事件指针); }
		
	};

}

